package main

<<<<<<< HEAD
// [泛型]自定义类型
=======
>>>>>>> origin/dev
type Mymap[KEY int | string, VALUE float32 | float64] map[KEY]VALUE
type Man struct {
}
type Woman struct {
}

<<<<<<< HEAD
// [泛型]自定义结构体
=======
>>>>>>> origin/dev
type Company[T Man | Woman] struct {
	Name string
	CEO  T
}
<<<<<<< HEAD

// [泛型]自定义约束
type MyChannel[T int | string] chan T

// [泛型]类型嵌套
=======
type MyChannel[T int | string] chan T

// 类型嵌套
>>>>>>> origin/dev
type WowStruct[T string | int, S []T] struct {
	A T
	B S
}

<<<<<<< HEAD
// 错误用法1 类型参数不能单独使用
//type CommonType[T int | string] T
//指正：
//type CommonType[T int | string] []T

// 错误用法2
// type CommonType [T *int | string] T
// 指正：
//type CommonType[T interface{ *int } | string] []T

=======
>>>>>>> origin/dev
func main() {
	//m := Mymap[int, float32]{}
	//company := Company[Man]{
	//	Name: "jzin",
	//	CEO:  Man{},
	//}
<<<<<<< HEAD

	//var c MyChannel[string]

	//匿名结构体不支持泛型！
	//匿名函数不支持泛型！
	//泛型不支持断言不支持switch判断
	//test:=struct[T int|string]{
	//	Name string
	//	Age int
	//}{}
=======
	var c MyChannel[string]
>>>>>>> origin/dev
}
